package com.bjesc_b2c.app.appraiset.camera;

import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.os.Environment;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * 图片处理工具类
 *
 * Created by up_girl on 2017/3/30.
 */
public class ImageUtil {

    private static final String TAG = "ImageUtil";

    /**
     * 判断是否有SD卡
     *
     * @return true为有SDcard，false则表示没有
     */
    public static boolean hasSdcard() {
        boolean hasCard = false;
        String state = Environment.getExternalStorageState();
        if (state.equals(Environment.MEDIA_MOUNTED)) {
            hasCard = true;
        }
        return hasCard;
    }

    /**
     * 使用系统当前日期和时间加以调整作为照片的名称
     *
     * @return String 文件拍照名字
     * @throws
     */
    public static String getPhotoFileName() {
        Date date = new Date(System.currentTimeMillis());
        SimpleDateFormat dateFormat = new SimpleDateFormat("'IMG'_yyyyMMdd_HHmmss", Locale.CHINA);
        return dateFormat.format(date) + ".jpg";
    }

    public static Bitmap rotaingImageView(int angle, Bitmap bitmap) {
        // 旋转图片 动作
        Matrix matrix = new Matrix();
        matrix.postRotate(angle);
        // 创建新的图片
        Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
        if(bitmap.isRecycled()==false) //如果没有回收
            bitmap.recycle();
        return resizedBitmap;
    }

    /**
     * 处理图片
     *
     * @param bm        所要转换的bitmap
     * @param newWidth  新的宽
     * @param newHeight 新的高
     * @return 指定宽高的bitmap
     */
    public static Bitmap zoomImg(Bitmap bm, int newWidth, int newHeight) {
        // 获得图片的宽高
        int width = bm.getWidth();
        int height = bm.getHeight();
        // 计算缩放比例
        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;
        // 取得想要缩放的matrix参数
        Matrix matrix = new Matrix();
        matrix.postScale(scaleWidth, scaleHeight);
        // 得到新的图片
        Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);
        return newbm;
    }

    /**
     * @param bm        原图
     * @param newWidth  希望缩放后得到的宽
     * @param newHeight 希望缩放后得到的高
     * @return 缩放截取上部分的位图。
     */
    public static Bitmap zoomAndClipImg(Bitmap bm, int newWidth, int newHeight) {
        Bitmap result = bm;
        // 得到新的图片
        Bitmap scaleBitmap;
        try {
            scaleBitmap = zoomImg(bm, newWidth, newHeight);
        } catch (Exception e) {
            return null;
        }
        try {
            result = Bitmap.createBitmap(scaleBitmap, 0, 0, newWidth, newHeight * 17 / 25);
            scaleBitmap.recycle();
        } catch (Exception e) {
            return null;
        }
        return result;
    }


}
